package com.errol.msgcenterclient.service;

import com.renjia.uker.entity.MqMessage;
import org.springframework.lang.NonNull;

import java.util.List;

/**
 * 消息中心钉钉机器人消息服务
 * tag 表示消息场景，需要在消息中心后台进行配置
 *
 * @author zhang xiao bin
 * @version v1.0
 * @date 2021/05/12
 * @since v1.1.0
 **/
public interface MsgCenterService {

    /**
     * 发送业务通知（顺序消费消息）
     *
     * @param tag       tag 表示业务消息场景，一般业务系统都会接入多个 tag
     * @param mqMessage 业务消息
     * @return true 表示往 mq 发送成功
     */
    boolean sendCommonMsg(@NonNull String tag, @NonNull MqMessage mqMessage);

    /**
     * 发送业务通知（顺序消费消息）
     *
     * @param tag        tag 表示业务消息场景，一般业务系统都会接入多个 tag
     * @param mqMessages 业务消息列表
     * @return true 表示往 mq 发送成功
     */
    boolean sendCommonMsg(@NonNull String tag, @NonNull List<MqMessage> mqMessages);

    /**
     * 使用默认 tag 向配置的钉钉机器人发送消息
     *
     * @param msg 消息
     * @return true 表示往 mq 发送成功
     */
    boolean sendMsgToDingRobot(@NonNull String msg);

    /**
     * 使用自定义 tag 向配置的钉钉机器人发送消息
     *
     * @param msg 消息
     * @param tag tag 表示消息场景，需要在消息中心后台进行配置
     * @return true 表示往 mq 发送成功
     */
    boolean sendMsgToDingRobot(@NonNull String msg, @NonNull String tag);

    /**
     * 用于钉钉群通知 自定义消息模板的场景
     *
     * @param mqMessage 消息体
     * @param tag       tag 表示消息场景，需要在消息中心后台进行配置
     * @return true 表示往 mq 发送成功
     */
    boolean sendMsgToDingRobot(@NonNull MqMessage mqMessage, @NonNull String tag);

}
